.\" Copyright (C) 1992-1997 Michael K. Johnson <johnsonm@redhat.com>
.\" Copyright (C) 1998      Andrea Arcangeli   <andrea@e-mind.com>
.\" It may be distributed under the terms of the GNU General Public License,
.\" version 2, or any higher version.  See section COPYING of the GNU General
.\" Public license for conditions under which this file may be redistributed.
.\"
.TH TUNELP 8 "October 2011" "util-linux" "System Administration"
.SH NAME
tunelp \- set various parameters for the lp device
.SH SYNOPSIS
.B tunelp
[options]
.I device
.SH DESCRIPTION
\fBtunelp\fP sets several parameters for the /dev/lp\fI?\fP devices, for
better performance (or for any performance at all, if your printer won't work
without it...) Without parameters, it tells whether the device is using
interrupts, and if so, which one.  With parameters, it sets the device
characteristics accordingly.
.SH OPTIONS
.TP
\fB\-i\fR, \fB\-\-irq\fR \fIargument\fR
specifies the IRQ to use for the parallel port in question.  If this is set
to something non-zero, \-t and \-c have no effect.  If your port does not use
interrupts, this option will make printing stop.  The command
.B tunelp -i 0
restores non-interrupt driven (polling) action, and your printer should work
again.  If your parallel port does support interrupts, interrupt-driven
printing should be somewhat faster and efficient, and will probably be
desirable.
.IP
NOTE: This option will have no effect with kernel 2.1.131 or later since the
irq is handled by the parport driver.  You can change the parport irq for
example via
.IR /proc/parport/*/irq .
Read
.I /usr/src/linux/Documentation/parport.txt
for more details on parport.
.TP
\fB\-t\fR, \fB\-\-time\fR \fImilliseconds\fR
is the amount of time in jiffies that the driver waits if the printer doesn't
take a character for the number of tries dictated by the \-c parameter.  10
is the default value.  If you want fastest possible printing, and don't care
about system load, you may set this to 0.  If you don't care how fast your
printer goes, or are printing text on a slow printer with a buffer, then 500
(5 seconds) should be fine, and will give you very low system load.  This
value generally should be lower for printing graphics than text, by a factor
of approximately 10, for best performance.
.TP
\fB\-c\fR, \fB\-\-chars\fR \fIcharacters\fR
is the number of times to try to output a character to the printer before
sleeping for \-t \fITIME\fP.  It is the number of times around a loop that
tries to send a character to the printer.  120 appears to be a good value for
most printers in polling mode.  1000 is the default, because there are some
printers that become jerky otherwise, but you \fImust\fP set this to `1' to
handle the maximal CPU efficiency if you are using interrupts.  If you have a
very fast printer, a value of 10 might make more sense even if in polling
mode.  If you have a \fIreally\fP old printer, you can increase this further.
.IP
Setting \-t \fITIME\fP to 0 is equivalent to setting \-c \fICHARS\fP to
infinity.
.TP
\fB\-w\fR, \fB\-\-wait\fR \fImilliseconds\fR
is the number of usec we wait while playing with the strobe signal.  While
most printers appear to be able to deal with an extremely short strobe, some
printers demand a longer one.  Increasing this from the default 1 may make it
possible to print with those printers.  This may also make it possible to use
longer cables.  It's also possible to decrease this value to 0 if your
printer is fast enough or your machine is slow enough.
.TP
\fB\-a\fR, \fB\-\-abort\fR \fI<on|off>\fR
This is whether to abort on printer error - the default is not to.  If you
are sitting at your computer, you probably want to be able to see an error
and fix it, and have the printer go on printing.  On the other hand, if you
aren't, you might rather that your printer spooler find out that the printer
isn't ready, quit trying, and send you mail about it.  The choice is yours.
.TP
\fB\-o\fR, \fB\-\-check\-status\fR \fI<on|off>\fR
This option is much like \-a.  It makes any
.BR open (2)
of this device check to see that the device is on-line and not reporting any
out of paper or other errors.  This is the correct setting for most versions
of lpd.
.TP
\fB\-C\fR, \fB\-\-careful\fR \fI<on|off>\fR
This option adds extra ("careful") error checking.  When this option is on,
the printer driver will ensure that the printer is on-line and not reporting
any out of paper or other errors before sending data.  This is particularly
useful for printers that normally appear to accept data when turned off.
.IP
NOTE: This option is obsolete because it's the default in 2.1.131 kernel or
later.
.TP
\fB\-s\fR, \fB\-\-status\fR
This option returns the current printer status, both as a decimal number from
0..255, and as a list of active flags.  When this option is specified, \-q
off, turning off the display of the current IRQ, is implied.
.TP
\fB\-T\fR, \fB\-\-trust\-irq\fR \fI<on|off>\fR
This option is obsolete. It was added in Linux 2.1.131, and removed again in
Linux 2.3.10.  The below is for these old kernels only.
.IP
This option tells the lp driver to trust or not the IRQ.  This option makes
sense only if you are using interrupts.  If you tell the lp driver to trust
the irq, then, when the lp driver will get an irq, it will send the next
pending character to the printer unconditionally, even if the printer still
claims to be BUSY.  This is the only way to sleep on interrupt (and so the
handle the irq printing efficiently) at least on Epson Stylus Color Printers.
The lp driver automagically detects if you could get improved performance by
setting this flag, and in such case it will warn you with a kernel message.
.IP
NOTE: Trusting the irq is reported to corrupt the printing on some hardware,
you must try to know if your printer will work or not...
.TP
\fB\-r\fR, \fB\-\-reset\fR
This option resets the port.  It requires a Linux kernel version of 1.1.80 or
later.
.TP
\fB\-q\fR, \fB\-\-print\-irq\fR \fI<on|off>\fR
This option sets printing the display of the current IRQ setting.
.SH NOTES
.BR \-o ,
.BR \-C ,
and
.B \-s
all require a Linux kernel version of 1.1.76 or later.
.PP
.B \-C
requires a Linux version prior to 2.1.131.
.PP
.B \-T
requires a Linux version of 2.1.131 or later.
.SH BUGS
By some unfortunate coincidence the ioctl LPSTRICT of 2.0.36 has the same
number as the ioctl LPTRUSTIRQ introduced in 2.1.131.  So, use of the \-T
option on a 2.0.36 kernel with an tunelp compiled under 2.1.131 or later may
have unexpected effects.
.SH FILES
.I /dev/lp?
.br
.I /proc/parport/*/*
.SH AVAILABILITY
The tunelp  command is part of the util-linux package and is available from
.UR https://\:www.kernel.org\:/pub\:/linux\:/utils\:/util-linux/
Linux Kernel Archive
.UE .
